忽然发现图片点击放大失效了,前面装了插件也没用。
对比查看代码后发现,正则匹配匹配不上。
// 原本的代码是这样的
add_filter('the_content', 'fancybox');
function fancybox($content){
$pattern = array("/<img(.*?)src=('|\")([^>]*).(bmp|gif|jpeg|jpg|png|swf)('|\")(.*?)>/i","/<a(.*?)href=('|\")([^>]*).(bmp|gif|jpeg|jpg|png|swf)('|\")(.*?)>(.*?)<\/a>/i");
$replacement = array('<a$1href=$2$3.$4$5 data-fancybox="gallery"><img$1src=$2$3.$4$5$6></a>','<a$1href=$2$3.$4$5 data-fancybox="images"$6>$7</a>');
$content = preg_replace($pattern, $replacement, $content);
return $content;
}
//但是我的文章的图片元素是这样的
<figure class="wp-block-image size-full"><img loading="lazy" src="http://cdn.mxguanwang.cn/wp-content/uploads/2023/09/image.png?imageView2/2/w/1280/interlace/1/q/100#" alt="" class="wp-image-3007"></figure>
修改正则表达式即可解决问题。
// 修改后的代码
add_filter('the_content', 'fancybox');
function fancybox($content){
$pattern = '/<img([^>]*)src="([^"]+)"([^>]*)>/';
$replacement = '<a href="$2" data-fancybox="gallery"><img$1src="$2"$3></a>';
$content = preg_replace($pattern, $replacement, $content);
return $content;
}
Comments | NOTHING